/*
一下 是利用vuex模拟购物车的数据，真实开发有接口
*/
export default {
  namespaced: true,
  state: {
    cart: {
      total: 0,
      isAllChecked: true,
      items: []
    }
  },
  mutations: {
    calc_total (state) {
      /*
      所有的已经选中的 商品的  单价*数量的综合
      */
      let total = 0
      // 过滤未选中的商品
      const checkedItems = state.cart.items.filter(item => item.checked)
      // 计算总价格了
      checkedItems.forEach(item => {
        total += item.num * item.minPrice
      })
      total = parseFloat(total.toFixed(2))
      state.cart.total = total
    },
    set_cart (state, cart) {
      state.cart = cart
    },
    // 删除商品
    del_item (state, index) {
      state.cart.items.splice(index, 1)
    },
    // 改变商品选中状态
    single_checked (state, {index, checked}) {
      state.cart.items[index].checked = checked
    },
    // 改变商品全选状态
    all_checked (state, allChecked) {
      state.cart.isAllChecked = allChecked
    },
    allCheckedToSingle (state, allChecked) {
      // 点击全选 改变商品 选中状态
      state.cart.items.forEach(item => { item.checked = allChecked })
    },
    add_cart (state, item) {
      state.cart.items.unshift(item)
    }
  }
}
